// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_SHELL_SHELL_DEVTOOLS_FRONTEND_H_
#define CONTENT_SHELL_SHELL_DEVTOOLS_FRONTEND_H_

#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/devtools_client_host.h"
#include "content/public/browser/devtools_frontend_host_delegate.h"
#include "content/public/browser/web_contents_observer.h"
#include "cuc/src/cwkshell/view/shell_window.h"
namespace content {

class RenderViewHost;
class Shell;
class WebContents;
}
namespace cuc{
	namespace shell{
		class ShellDevToolsFrontend : public content::WebContentsObserver,
			public content::DevToolsFrontendHostDelegate {
		public:
			static ShellDevToolsFrontend* Show(content::WebContents* inspected_contents);
			void Focus();
			void Close();

		private:
			ShellDevToolsFrontend(ShellWindow* frontend_shell, content::DevToolsAgentHost* agent_host);
			virtual ~ShellDevToolsFrontend();

			// WebContentsObserver overrides
			virtual void RenderViewCreated(content::RenderViewHost* render_view_host) OVERRIDE;
			virtual void WebContentsDestroyed(content::WebContents* web_contents) OVERRIDE;

			// DevToolsFrontendHostDelegate implementation
			virtual void ActivateWindow() OVERRIDE {}
			virtual void ChangeAttachedWindowHeight(unsigned height) OVERRIDE {}
			virtual void CloseWindow() OVERRIDE {}
			virtual void MoveWindow(int x, int y) OVERRIDE {}
			virtual void SetDockSide(const std::string& side) OVERRIDE {}
			virtual void OpenInNewTab(const std::string& url) OVERRIDE {}
			virtual void SaveToFile(const std::string& url,
				const std::string& content,
				bool save_as) OVERRIDE {}
			virtual void AppendToFile(const std::string& url,
				const std::string& content) OVERRIDE {}
			virtual void RequestFileSystems() OVERRIDE {}
			virtual void AddFileSystem() OVERRIDE {}
			virtual void RemoveFileSystem(const std::string& file_system_path) OVERRIDE {}
			virtual void InspectedContentsClosing() OVERRIDE;

			ShellWindow* frontend_shell_;
			scoped_refptr<content::DevToolsAgentHost> agent_host_;
			scoped_ptr<content::DevToolsClientHost> frontend_host_;

			DISALLOW_COPY_AND_ASSIGN(ShellDevToolsFrontend);
		};

	}
}


#endif  // CONTENT_SHELL_SHELL_DEVTOOLS_FRONTEND_H_
